Steuerung der Konfigurationsgrößen

Ursprünglich handelt es sich bei {\manual META}{\manual FONT} (und TEX) um ein {\smallcaps Pas\-cal}-Programm, das nicht in der Lage ist, seine Speicherkonfiguration zur Laufzeit anzulegen. Um diese zu verändern, müssen Sie normalerweise den Quelltext von {\manual META}{\manual FONT} mit geänderten internen Vorgabewerten neu übersetzen. Doch mit dieser Implementierung müssen Sie nicht mehr die Meldung „ask a wizard to enlarge me`` fürchten, sondern können stattdessen selbst ,zaubern`! Sie wurde nämlich mit Hilfe des Web2C-Sprachwandlers aus der {\mc UNIX}-Verteilung durchgeführt und somit ist es möglich, die zusätzliche Eigenschaft zur Kontrolle der internen Variablen einzubauen.

{\manual META}{\manual FONT} verwendet einen gesonderten Suchpfad sowie die Umgebungsvariable MFCONFIG. (Siehe Abschnitt [*] zu Einzelheiten über die Benutzung von Umgebungsvariablen.) Die Programme Ini{\mc MF} und Vir{\mc MF} werden in den darin angegebenen Verzeichnissen nach der Datei mfmemory.config suchen, die in einzelnen Zeilen Anweisungen der Form

   set memmax       100000
   set screenheight    400
   set scalefactor       2
enthalten sollte. Die Beispieldatei im config-Verzeichnis , set`zt die in meiner gegenwärtigen Standardkonfiguration verwendeten Werte, die etwas höher sind als die internen Vorgabewerte. Nicht alle Einstellungen müssen in dieser Datei angegeben werden. Beachten Sie aber, daß Sie auch nicht alle Einstellungen bis zum Maximum hochdrehen können – dazu müßten Sie mehr als 8 Gigabyte freien Speicher haben!3

Wenn Sie eine Standard-base-Datei mit Ini{\mc MF} erzeugen, so ist jede weitere Änderung der Konfiguration mfmemory.config zulässig für Vir{\mc MF} in Verbindung mit dieser speziellen base-Datei, außer Änderungen am Wert memtop. Dies führt zur {\manual META}{\manual FONT}-Meldung „(Fatal base file error; I'm stymied)``, was anzeigt, daß diese base-Datei von einem Ini{\mc MF} mit einer anderen Konfiguration stammt.

Hier ist eine vollständige Liste aller Parameter, die in der Konfigurationsdatei zulässig sind, ihre Vorgabewerte und einige Regeln für ihre kleinsten und größten Werte:

Bezeichnung Vorgabe Grenzwert Zweck
memmax 30000 maxhalfword Größe des Hauptspeichers
maxinternal 100 ≤259774 Anzahl der Internas
bufsize 500 maxhalfword Eingabezeichen
errorline 72 maxhalfword Länge der Fehlerzeile
halferrorline 42 <errline-15 Erste Fehlerzeile
maxprintline 79 ≥60 Länge der Ausgabezeile
screenwidth 768 4095 Breite der Bildschirmanzeige
screenheight 1024 4095 Höhe der Bildschirmanzeige
stacksize 30 300 Anzahl der Eingabequellen
maxstrings 2000 maxhalfword Anzahl der Zeichenketten
poolsize 32000 maxhalfword und der enthaltenen Zeichen
movesize 5000 10000 Speicher für Oktantenschritte
maxwiggle 300 1000 Gerundete Punkte pro Kreis
gfbufsize 100 4096 Ausgabepuffergröße
pathsize 300 1000 Knotenzahl in einem Pfad
bistacksize 785 785 Teilungsstack
headersize 25 100 Worte in {\mc TFM}-Köpfen
ligtablesize 5000 32510 Ligaturen/Einrückungen
maxkerns 500 1000 Unterschiedliche Abstände
maxfontdimen 50 100 Anzahl von ,fontdimen`sionen
memtop 30000 memmax Höchste Speicherstelle
scalefactor 1 10 Anzeige ,{\mc SF}`-fach verkleinert
maxinopen 6 20 Anzahl der Ausgabedateien
paramsize 150 1000 Makro-Parameter
Einige dieser Werte werden vor ihrer Verwendung noch mit 4 oder 8 multipliziert, so daß die tatsächlich benötigte Bytezahl für eine spezielle Einstellung nicht so einfach zu bestimmen ist. Solange Sie jedoch keine Probleme mit den Vorgabewerten oder dieser Standardkonfiguration haben, empfehle ich Ihnen, sie so zu lassen. In den meisten Fällen von ungenügender Speichergröße muß nur memmax erhöht werden, und dies wurde tatsächlich bis zum fürchterlich hohen Wert 750.000 ausprobiert, und zwar auf meinem Amiga 2000 mit 8 {\mc MB} 32 Bit Fast{\mc RAM}.

Sie können die Größe der Bildschirmanzeige durch Veränderung der beiden Werte screenwidth, screenheight und scalefactor beeinflussen. Die Bedeutung der ersten beiden dürfte klar sein, nur sei angemerkt, daß screenheight den Wert für die interlaced Darstellung bezeichnet, obwohl non-interlaced Bildschirmmodi automatisch erkannt werden und entsprechend nur halb soviele Pixelzeilen angezeigt werden. Außerdem wird durch die beiden Werte nicht die Fenstergröße sondern die zugehörigen Werte innerwidth und innerheight eingestellt. Der scalefactor ist ein Reduktionsfaktor, das heißt die Anzeige wird sowohl in der Höhe als auch in der Breite um diesen Faktor verkleinert dargestellt. Um sinnvoll mit dieser Einstellung arbeiten zu können, enthält die mitgelieferte plain.base die internen Vorgaben

   screen_rows:=4095; screen_cols:=4095; % infinity
wie sie in der Druckermodusdatei modes.mf festgelegt sind. Bei der Bildschirmanzeige verwendet {\manual META}{\manual FONT} den jeweils kleineren Wert von screenheight und screen_rows beziehungsweise screenwidth und screen_cols, so daß mit diesen Maximalwerten nur die in der Konfigurationsdatei angegebenen Werte berücksichtigt werden.